// ===========================================================================
// Отправка сообщений между компонентами расширения и от контекстного скрипта
// к компонентам расширения
function sendMessageToComponent(text, recipient) {
	let message = new Object();
	message.data = text
	message.sender = utils.current
	message.recipient = recipient
	utils.log('Отправка сообщения по адресу: ' + message.recipient)
	utils.logOutMessage(message)
	chrome.runtime.sendMessage(JSON.stringify(message),
		function(response) {
			if (chrome.runtime.lastError) {
				utils.log('Ошибка получения ответа');
			} else {
				utils.logInMessage(JSON.parse(response))
			}
		});
}
// Отправка сообщения к контекстному скрипту от компонентов расширения
function sendMessageToConteneScript(recipient) {
	chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
		let tab = tabs[0]
		function send(idTab, type, text) {
			let message = new Object();
			message.data = type + ' - ' + idTab + ' = ' + text
			message.sender = utils.current
			message.recipient = recipient
			utils.logOutMessage(message)
			chrome.tabs.sendMessage(idTab, JSON.stringify(message),
			function(response) {
				if (chrome.runtime.lastError) {
					console.log('Ошибка получения ответа на сообщение: ' + text);
				} else {
					console.log(`Для id ${idTab} получено сообщение:`)
					utils.logInMessage(JSON.parse(response))
				}
			})
		}
		
		let id = tab.id // popup/id = options/openerTabId
		send(id, 'tab.id', recipient);
		let openerTabId = tab.openerTabId
		send(openerTabId, 'tab.openerTabId', recipient);
		let windowId = tab.windowId // popup/windowId = options/windowId
		send(windowId, 'tab.windowId', recipient);
	});
}
// Установка таймаута и отправка одного из видов сообщений
function send() {
  sendMessage('popup', 'popup')
  sendMessage('devtools', 'devtools')
  sendMessage('content_script', 'content_script')
  sendMessage('options', 'options')
  }
setInterval(send, 2000);

// Прием сообщений в контекстном скрипте и в компонентах расширения
chrome.runtime.onMessage.addListener(
	function (request, sender, sendResponse) {
		let inMsg = JSON.parse(request)
		if (inMsg['recipient'] === utils.current) {
			utils.logInMessage(inMsg)
			let outMsg = new Object();
			outMsg.data = utils.current + ' OK'
			outMsg.sender = utils.current
			outMsg.recipient = inMsg['sender']
			utils.log('Отправка ответа по адресу: ' + outMsg.recipient)
			utils.logOutMessage(outMsg)
			sendResponse( JSON.stringify(outMsg) );
		} else {
			utils.logIgnoreMessage(inMsg)
		}
	}
);
// ===========================================================================